/**
 * 一个经常会犯的代码：
 * 这是一个请求的拦截器模块，
 * 当请求失败时，会有提示，有路由跳转
 * 代码在逻辑上没问题，但 跟ui 模块，路由模块产生耦合，
 * 如果后续代码/需求 迭代增多， 会更加复杂，模块之间不好区分，最终变成屎山
 * 解决方式：使用中间层，没有中间层做不到的事情， 一个不够，就在多加几个
 * 
 * */ 

import axios, { AxiosResponse } from 'axios';
import router from '../router/index';
import { message } from 'ant-design-vue';
import { error } from 'console';

const ins = axios.create({
  baseURL: 'http://localhost:3000'
})

const successHandeler = (res: AxiosResponse): any => {
  // ...
}

const errorHandeler = (error:any): any => {
  if (error.response.status === 401) {
    message.error('登录失效，请重新登录');
    router.push('/login')
  } else if (error.response.status === 400) {
    message.error('参数错误');
  }
}

ins.interceptors.response.use(successHandeler, errorHandeler)